package net.atomtree.util;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;

/**
 * Created by czk on 2015/12/30.
 */
public class PortAnalyse {
    public static void main(String args[]){
        String url="http://101.204.243.107:8080/";
        String valAppId="app-20151230162059-0001";
        PortAnalyse.analyse(url,valAppId);
    }
    public static String analyse(String url,String valAppId){
        try {
            Elements runApp= null;
            try {
                //得到runApp节点元素
                runApp = getRunApplicationElements(url.toString());
            } catch (Exception e) {
                e.printStackTrace();
            }
            //运行程序的时候runApplication元素下会有个表格所以不为空
            if (!runApp.toString().equals("")){
                //依据appID得到url 包括端口号4040
                String portUrl=getPortUrl(runApp,valAppId);
                return portUrl;
            }else{
                //返回
                System.out.println("没有应用在运行");
            }
        } catch (Exception e){
            e.printStackTrace();
        }
        //有app在运行
        return "";
    }
    public static Elements getRunApplicationElements(String url){
        Document doc= null;
        try {
            doc = Jsoup.connect(url).get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Elements runApp=doc.body().getElementsByClass("container-fluid").get(0).getElementsByClass("row-fluid").get(3).getElementsByTag("tbody");
        return runApp;
    }

    /**
     *
     * @param runApp   runApplication元素
     * @param valAppId  用户要查看的AppID
     * @return 这个AppID所属的端口如果是空则是""
     */
    public static String getPortUrl(Elements runApp,String valAppId){
        //得到tbody下的所有记录行
        Elements trEls=runApp.get(0).getElementsByTag("tr");
        String portUrl=new String();
        //遍历每一行记录
        for(Element e1:trEls){
            Elements tdEls=e1.getElementsByTag("td");
            //只要遍历第一个td字段
            Elements appIdElements=tdEls.get(0).child(0).getElementsContainingText("app");
            System.out.println(appIdElements);
            for (Element element:appIdElements){
                //得到这一行的appID是否和我页面传来的ID是否相等
                if (element.text().equals(valAppId)){
                    System.out.println("找到了"+valAppId);
                    //得到appID相应的url端口
                    portUrl=tdEls.get(1).child(0).attr("href");
                    System.out.println(valAppId+"端口号为"+portUrl);
                    return portUrl;
                }else {
                    System.out.println("没找到"+valAppId);
                    return "";
                }
            }
        }
        return "";
    }
}
